package pe.edu.upc.dew.grupo5.service;

import java.util.List;

import pe.edu.upc.dew.grupo5.dao.BoletoDao;
import pe.edu.upc.dew.grupo5.dao.FuncionDao;
import pe.edu.upc.dew.grupo5.dao.SalaDao;
import pe.edu.upc.dew.grupo5.model.Boleto;
import pe.edu.upc.dew.grupo5.model.Funcion;
import pe.edu.upc.dew.grupo5.model.Sala;

public class BoletoServiceImpl implements BoletoService{
	private BoletoDao boletoDao;
	private FuncionDao funcionDao;
	private SalaDao salaDao;
	
	public void setBoletoDao(BoletoDao boletoDao) {
		this.boletoDao = boletoDao;
	}
	
	public void setFuncionDao(FuncionDao funcionDao) {
		this.funcionDao = funcionDao;
	}

	public void setSalaDao(SalaDao salaDao) {
		this.salaDao = salaDao;
	}

	@Override
	public Boleto getBoletoPorCodigo(int idBoleto) {
		return boletoDao.getBoletoPorCodigo(idBoleto);
	}

	@Override
	public List<Boleto> getBoletos() {
		return boletoDao.getBoletos();
	}

	@Override
	public void eliminarBoleto(int idBoleto) {
		boletoDao.eliminarBoleto(idBoleto);
	}

	@Override
	public Boleto insertaBoleto(int idFuncion, int cantidad, int idCliente) {
		Funcion funcion = funcionDao.getFuncionPorCodigo(idFuncion);
		Sala sala = salaDao.getSalaPorCodigo(funcion.getIdSala());
		int idCine = sala.getIdCine();
		
		try{
			Boleto boleto = new Boleto();
			
			boleto.setCantidad(cantidad);
			boleto.setIdCliente(idCliente);
			boleto.setCodigoBanco("001");
			boleto.setCodigoPayPal("00003");
			boleto.setFecha("21/02/2011");
			boleto.setIdFuncion(idFuncion);
			boleto.setPrecio(funcion.getPrecio());
			boleto.setImporte(funcion.getPrecio()*boleto.getCantidad());
			boleto.setNumBoleto(String.valueOf(idCine)+"-"+String.valueOf(sala.getIdSala())+"-"+String.valueOf(idFuncion)+"-"+String.valueOf(boletoDao.getNumero()));
			boletoDao.insertaBoleto(boleto);
			return boleto;
		} catch (Exception e) {
			throw new RuntimeException("Error al insertar el boleto.");
		}

	}

}
